package lambda;

import java.io.File;
import java.io.FileFilter;

/**
 * jdk8之后Java推出了一个特性：lambda表达式
 *
 * 直观感受，可以用更精简的语法创建匿名内部类
 * 但是lambda创建匿名内部类是要求所实现的接口中只能有一个抽象方法
 * 语法:
 * （参数列表）->{
 *     方法体
 * }
 */
public class LambdaDemo {
    public static void main(String[] args) {
        FileFilter fileFilter = new FileFilter() {
            @Override
            public boolean accept(File file) {
                return file.getName().contains("o");
            }
        };
        //lambda表达式写法（就是省略了接口名和方法名）。
        FileFilter fileFilter1 = (File file)->{
          return file.getName().contains("o");
        };
        //也可以省略参数类型。
        FileFilter fileFilter2 = (file)->{
            return file.getName().contains("o");
        };

        //只有一个参数时，圆括号也可以忽略不写。
        FileFilter fileFilter3 = file->{
            return file.getName().contains("o");
        };
        //当方法体中只含有一句话时，方法体的“{}”可以忽略，
        // 如果含有return时要一同忽略
        FileFilter fileFilter4 =file->file.getName().contains("o");

    }
}
